﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>Throw - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The Throw statement signals the occurrence of an error. This signal can be caught by a try-catch statement." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>Throw</h1>

<p>发生错误时发出信号. 此信号可以被 <a href="Try.htm">try</a>-<a href="Catch.htm">catch</a> 语句捕获.</p>

<pre class="Syntax"><span class="func">Throw</span> <span class="optional">Value</span></pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Value</dt>
  <dd>
    <p>要抛出的值; 通常是一个 <a href="../objects/Error.htm">Error</a> 对象. 例如:</p>
      <pre>throw ValueError("Parameter #1 invalid", -1, theBadParam)</pre>
      <p>所有类型的值都可以被抛出, 但是如果使用 <a href="Catch.htm">Catch</a> 而不指定一个类(或者使用 <a href="Try.htm">Try</a> 而不使用 <a href="Catch.htm">Catch</a> 或 <a href="Finally.htm">Finally</a>), 它将只捕获 <a href="../objects/Error.htm">Error</a> 类的实例.</p>
      <p>当在 <a href="Catch.htm">Catch</a> 中执行时, 可以省略 <em>Value</em> 来重新抛出捕获的值(避免仅为此目的指定一个输出变量). 这甚至在嵌套的 <em>try-finally</em> 中也支持, 但在嵌套的 <em>try-catch</em> 中不支持. 带有 <code>throw</code> 的行不需要被 <em>catch</em> 语句的主体所包含; 它可以被调用的函数所使用.</p>
  </dd>

</dl>

<h2 id="Remarks">备注</h2>
<p>如果表达式被括在括号中, 则 <code>throw</code> 后的空格或制表符是可选的 , 如 <code>throw(Error())</code> 所示.</p>
<p>一个抛出的值或运行时错误可以被 <a href="Try.htm">Try</a>-<a href="Catch.htm">Catch</a> <em>捕获</em>. 在这种情况下, 执行被转移到 <em>catch</em> 语句或 <em>try</em> 之后的下一个语句. 如果一个抛出的值没有被捕获, 会发生以下情况:</p>
<ul>
  <li>任何激活的 <a href="OnError.htm">OnError</a> 回调都会被调用. 每个回调可以检查 <em>Value</em> 并抑制或允许进一步的回调和默认处理.</li>
  <li>默认情况下, 会根据抛出的内容显示错误信息. 如果 <em>Value</em> 是一个<a href="../objects/Object.htm">对象</a>, 并且拥有一个名为 <em>Message</em> 的值属性, 那么它的值将被用作消息. 如果 <em>Value</em> 是一个非数字字符串, 则使用它作为消息. 在任何其他情况下, 都会使用一个默认的消息. 如果 <em>Value</em> 是数字, 则显示在默认消息的下方.</li>
  <li>线程退出. 请注意, 这不一定发生在可持续的错误上, 但 <em>throw</em> 永远是不可持续的.</li>
</ul>

<h2 id="Related">相关</h2>
<p><a href="../objects/Error.htm">Error 对象</a>, <a href="Try.htm">Try</a>, <a href="Catch.htm">Catch</a>, <a href="Finally.htm">Finally</a>, <a href="OnError.htm">OnError</a></p>

<h2 id="Examples">示例</h2>
<p>请参阅 <a href="Try.htm#Examples">Try</a>.</p>

</body>
</html>